package cn.liulin.java8.lambda;

import cn.liulin.java8.pojo.Apple;

import java.io.IOException;
import java.nio.file.DirectoryStream;
import java.util.function.Function;

/**
 * cn.liulin.java8.lambda$
 * Lambda表达式基本用法
 * 参数需要()包裹，->必须，使用{}必须包含语句，如果只有表达式或语句那么不需要{}
 * @author ll
 * @date 2021-09-16 15:50:14
 **/
public class LambdaBase {
    /**
     * 具有一个String类型的参数并返回一个int，Lambda没有return语句，因为已经包含了return
     * @author ll
     * @date 2021-09-16 15:50:41
     * @return void
     **/
    public static void base1(String str) {
//        (String s) -> s.length();
    }

    /**
     * 具有一个Apple类型的参数并返回一个boolean(苹果的重量是否超过150g)
     * @author ll
     * @date 2021-09-16 15:58:48
     * @param apple
     * @return void
     **/
    public static void base2(Apple apple) {
//        (Apple a) -> a.getWeight() > 150;
    }

    /**
     * 具有两个int类型的参数而没有返回值(void返回)。注意Lambda表达式可以包含多行语句，这里是两行
     * @author ll
     * @date 2021-09-16 16:01:39
     * @return void
     **/
    public static void base3() {
//        (int x, int y) -> {
//            System.out.println("Result:");
//            System.out.println(x+y);
//        };
    }

    /**
     * 没有参数，返回一个int
     * @author ll
     * @date 2021-09-16 16:03:28
     * @return void
     **/
    public static void base4() {
//        () -> 42;
    }

    /**
     * 具有两个Apple类型的参数，返回一个int，比较两个apple的重量
     * @author ll
     * @date 2021-09-16 16:04:28
     * @return void
     **/
    public static void base5() {
//        (Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight());
    }
}